﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using ControlStock.Dominio;

namespace ControlStock.Repositorio
{
   public class ProveedorRepositorio
    {
       Conexion Conn;
        public ProveedorRepositorio()
        {
            Conn = new Conexion();
        }

        public int Agregar(Proveedor Proveedor)
        {
      
         String Consulta = "Insert into PROVEEDOR(Pro_Nombre, Pro_RazonSocial, Pro_Direccion, Pro_Telefono, Pro_Celular, Pro_Mail, Pro_Estado)";
         Consulta+= " Values('"+Proveedor.Nombre_Prov+"','"+Proveedor.Razon_Prov+"','"+Proveedor.Direccion_Prov+"',"+Proveedor.Telefono_Prov+","+Proveedor.Celular_Prov+",'"+Proveedor.Mail_Prov+"',"+ (Proveedor.Estado_Prov ? 1 : 0) +" ) Select @@identity";
         return Conn.Insertar(Consulta);

        }

        public void Modificar(Proveedor proveedor)
        {
            string Consulta = " Update PROVEEDOR Set Pro_Nombre = '" + proveedor.Nombre_Prov + "', Pro_RazonSocial = '" + proveedor.Razon_Prov + "', Pro_Direccion = '" + proveedor.Direccion_Prov + "',";
            Consulta += " Pro_Telefono = " +proveedor.Telefono_Prov+", Pro_Celular = "+proveedor.Celular_Prov+", Pro_Mail = '"+proveedor.Mail_Prov+"', Pro_Estado = " +(proveedor.Estado_Prov ? 1 : 0) +" Where Pro_Id = "+proveedor.Id_Prov;
            Conn.ModificarEliminar(Consulta);

        }
       
      
       public Proveedor Buscar (int idproveedor)
       {
           string Consulta = "Select From PROVEEDOR Where Pro_Id = " + idproveedor;
           DataTable Tabla = Conn.Buscar(Consulta);
           if (Tabla.Rows.Count == 1)
               return this.Mapear(Tabla.Rows[0]);
           else
               return null;
       
       }



        public List<Proveedor> Buscarprov(string nombproveedor)
        {
            string Consulta = "Select * FROM PROVEEDOR Where Pro_Nombre like '%" + nombproveedor + "%'";  
            DataTable Tabla = Conn.Buscar(Consulta);
            List<Proveedor> ListaProveedor = new List<Proveedor>();
            foreach (DataRow fila in Tabla.Rows)
            {

                ListaProveedor.Add(this.Mapear(fila));
            }
            return ListaProveedor;
        }


        public List<Proveedor> Listar()
        {
            string Consulta = "Select * from PROVEEDOR";
            DataTable TablaProv = Conn.Buscar(Consulta);
            List<Proveedor> ListaProveedores = new List<Proveedor>();

            foreach (DataRow Fila in TablaProv.Rows)
            {
                ListaProveedores.Add(this.Mapear(Fila));
             
            }
            return ListaProveedores;
        }


        private Proveedor Mapear (DataRow Fila)
        {
            Proveedor proveedor_map = null;

            if (Fila != null)
            {
                proveedor_map = new Proveedor();
                proveedor_map.Id_Prov = Fila.IsNull("Pro_Id") ? 0 : Convert.ToInt32(Fila["Pro_Id"]);
                proveedor_map.Nombre_Prov = Fila.IsNull("Pro_Nombre") ? "" : Fila["Pro_Nombre"].ToString();
                proveedor_map.Razon_Prov = Fila.IsNull("Pro_RazonSocial") ? "" : Fila["Pro_RazonSocial"].ToString();
                proveedor_map.Direccion_Prov = Fila.IsNull("Pro_Direccion") ? "" : Fila["Pro_Direccion"].ToString();
                proveedor_map.Telefono_Prov = Fila.IsNull("Pro_Telefono") ? 0 : Convert.ToInt32(Fila["Pro_Telefono"]);
                proveedor_map.Celular_Prov = Fila.IsNull("Pro_Celular") ? 0 : Convert.ToInt32(Fila["Pro_Celular"]);
                proveedor_map.Mail_Prov = Fila.IsNull("Pro_Mail") ? "" : Fila["Pro_Mail"].ToString();
                proveedor_map.Estado_Prov = Fila.IsNull("Pro_Estado") ? false : Convert.ToBoolean(Fila["Pro_Estado"]);

           }
            return proveedor_map;
 
        }





    }
}
